/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package OR;

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 *
 * @author Drazzull
 */
public class ViagemOR {

    private final String marcaAutomovel;
    private final String modeloAutomovel;
    private final float mediaVeiculo;
    private final float tempo;
    private final float velocidadeMedia;
    private final String nomeMotora;
    private final Calendar dataNascimentoMotora;

    /**
     * Construtor padrão
     */
    public void ViagemOR() {
    }

    /**
     * Construtor parametrizado com todos os dados do objeto viagem
     *
     * @param marcaAutomovel Marca do automóvel da viagem
     * @param modeloAutomovel Modelo do automóvel da viagem
     * @param mediaVeiculo Média do veículo
     * @param tempo Tempo da viagem
     * @param velocidadeMedia Velocidade média da viagem
     * @param nomeMotora nome do motorista responsável pela viagem
     * @param dataNascimentoMotora data de nascimento do motorista
     */
    public ViagemOR(String marcaAutomovel, String modeloAutomovel, float mediaVeiculo, float tempo, float velocidadeMedia, String nomeMotora, Calendar dataNascimentoMotora) {
        this.marcaAutomovel = marcaAutomovel;
        this.modeloAutomovel = modeloAutomovel;
        this.mediaVeiculo = mediaVeiculo;
        this.tempo = tempo;
        this.velocidadeMedia = velocidadeMedia;
        this.nomeMotora = nomeMotora;
        this.dataNascimentoMotora = dataNascimentoMotora;
    }

    /**
     * Obtém a marca do automóvel
     *
     * @return Marca do automóvel
     */
    public String getMarcaAutomovel() {
        return marcaAutomovel;
    }

    /**
     * Obtém o modelo do automóvel
     *
     * @return Modelo do automóvel
     */
    public String getModeloAutomovel() {
        return modeloAutomovel;
    }

    /**
     * Obtém a Média da viagem
     *
     * @return Média da viagem
     */
    public float getMediaVeiculo() {
        return mediaVeiculo;
    }

    /**
     * Obtém o tempo da viagem
     *
     * @return Tempo da viagem
     */
    public float getTempo() {
        return tempo;
    }

    /**
     * Obtém a velocidade média da viagem
     *
     * @return Velocidade média da viagem
     */
    public float getVelocidadeMedia() {
        return velocidadeMedia;
    }

    /**
     * Obtém o nome do motorista responsável pela viagem
     *
     * @return Nome do motorista responsável pela viagem
     */
    public String getNomeMotora() {
        return nomeMotora;
    }

    /**
     * Obtém a data de nascimento do motorista responsável pela viagem
     *
     * @return Data de nascimento do motorista responsável pela viagem
     */
    public String getDataNascimentoMotora() {
        String ano = String.valueOf(dataNascimentoMotora.get(Calendar.YEAR));
        String mes = String.valueOf(dataNascimentoMotora.get(Calendar.MONTH));
        String dia = String.valueOf(dataNascimentoMotora.get(Calendar.DAY_OF_MONTH));
        return ano + "-" + mes + "-" + dia;
    }

    /**
     * Obtém a distancia percorrida na viagem, obtida através da formula:
     * Distância = Tempo * Velocidade
     *
     * @return Distância percorrida na viagem
     */
    public float getDistancia() {
        return tempo * velocidadeMedia;
    }

    /**
     * Obtém a quantidade de litros de combustível utilizados na viagem: Tempo *
     * litros = distancia / media
     *
     * @return Litros utilizados
     */
    public float getLitros() {
        return getDistancia() / mediaVeiculo;
    }

    /**
     * Obtém idade do motorista
     *
     * @return Idade do motorista
     */
    public long getIdadeMotorista() {
        return new GregorianCalendar().get(Calendar.YEAR) - dataNascimentoMotora.get(Calendar.YEAR);
    }
}
